package com.xhs.utils;

import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;
import cn.hutool.core.util.IdUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * @desc: 图形验证码工具类
 * @projectName: tools-parent
 * @author: xhs
 * @date: 2022/12/3 21:52
 * @version: JDK 1.8
 */
@Slf4j
@Component
public class CaptchaUtil {


    /**
     * 生成纯数字图形验证码
     */
    public Map<String, String> getPicCaptcha() {
        // 自定义纯数字的验证码（随机4位数字，可重复）
        RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);
        // 定义图形验证码的长、宽、字符个数、干扰线条数
        LineCaptcha lineCaptcha = cn.hutool.captcha.CaptchaUtil.createLineCaptcha(100, 38, 4, 80);
        //  验证码生成器
        lineCaptcha.setGenerator(randomGenerator);
        // 获取验证码的值
        String validCode = lineCaptcha.getCode();
        log.info("--------validCode:{}--------", validCode);
        // 获取验证码的base64
        String validCodeBase64 = lineCaptcha.getImageBase64Data();
        log.info("--------validCodeBase64:{}--------", validCodeBase64);
        // 生成请求号
        String validCodeReqNo = IdUtil.simpleUUID();
        log.info("--------validCodeReqNo:{}--------", validCodeReqNo);
//        // 将请求号作为key，验证码的值作为value放到redis，用于校验，2分钟有效
//        redisUtil.set(validCodeReqNo, validCode, 2 * 60);
        Map<String, String> map = new HashMap<>(16);
        map.put("validCodeReqNo", validCodeReqNo);
        map.put("validCodeBase64", validCodeBase64);
        return map;
    }
}
